package cn.buk.tms.bill.service;

import cn.buk.common.JsonResult;
import cn.buk.tms.entity.bill.BillInfo;
import cn.buk.tms.entity.order.flight.FlightChangeOrder;
import cn.buk.tms.entity.order.flight.FlightOrder;
import cn.buk.tms.entity.order.flight.FlightRefundOrder;
import cn.buk.tms.entity.order.hotel.HotelOrder;
import cn.buk.tms.entity.order.train.TrainOrder;
import cn.buk.tms.entity.order.vas.VasOrder;

/**
 * 账单导入接口：将已完成的订单导入到账单。
 */
public interface BillImportService {

  /**
   * 导出机票订单（已出票完成的，没有导入过的）
   */
  JsonResult importFlightOrder(final int enterpriseId, final String username, final int orderId);


  /**
   * 把flightOrder 转变为 billInfo
   */
  BillInfo convertFlightOrderToBillInfo(FlightOrder flightOrder);

  /**
   * 导入退票单
   *
   * @param enterpriseId 企业id
   * @param id           退票单id
   */
  JsonResult importFlightRefundOrder(int enterpriseId, String username, int id);


  /**
   * 把退票单转换为账单
   */
  BillInfo convertFlightRefundOrderToBillInfo(FlightRefundOrder flightRefundOrder);

  /**
   * 把改签单转化为账单
   */
  BillInfo convertFlightChangeOrderToBillInfo(FlightChangeOrder flightChangeOrder);


  /**
   * 导入改签单
   */
  JsonResult importFlightChangeOrder(int enterpriseId, String username, int id);

  BillInfo convertVasOrderToBillInfo(VasOrder vasOrder);


  JsonResult importVasOrder(int enterpriseId, String username, int orderId);


  /**
   * 导入酒店订单到账单
   */
  JsonResult importHotelOrder(int enterpriseId, String username, int orderId);


  /**
   * 导入火车票账单
   */
  JsonResult importTrainOrder(int enterpriseId, String username, int orderId);

  /**
   * 导入火车票退票单
   */
  JsonResult importTrainRefundOrder(int enterpriseId, String username, int orderId);

  /**
   * 把酒店订单转化为账单
   */
  BillInfo convertHotelOrderToBillInfo(HotelOrder hotelOrder);

  /**
   * 火车票订单转化为账单
   */
  BillInfo convertTrainOrderToBillInfo(TrainOrder trainOrder);


  /**
   * 导入已完成的租车订单到账单
   */
  JsonResult importRentalCarOrder(int enterpriseId, String username, int orderId);
}
